import $func from "./index.js"
import $config from "@/libs/config/evn.js"
import {
	shallowMerge,
	queryParams
} from '@/uni_modules/uview-plus'

// 上传的图片域名
const UPLOAD_IMG_URL = $config.imageUrl
// 静态资源
const ASSETS_IMG_URL = $config.assetsUrl
// oss配置的图片尺寸大小等级
const OSS_IMG_SIZE_STYLE = {
	// 最小
	small: 'style/image_size_small',
	// 中等压缩
	medium: 'style/image_size_medium',
	// 大的，最接近原图
	large: 'style/image_size_large',
}

/**
 * 项目图片地址拼接
 * @param {String} hash 地址目录路径，如携带http域名，则不会匹配 href
 * @param {String} options.size - [small|medium|large] 阿里云图片压缩挡位，不传默认原图
 * @param {String} options.href - 在hash地址没有携带域名的情况下所拼接的域名
 */
function imgurl(hash, options = {}) {
    // 合并配置
    const config = shallowMerge({
        // 这里是默认配置
        size: '',
        href: UPLOAD_IMG_URL
    }, options)

    const {
        url,
        data
    } = $func.parseUrlParams($func.isFullWebLink(hash) ? hash : config.href + hash)

    if (config.size) {
        data['x-oss-process'] = OSS_IMG_SIZE_STYLE[config.size]
    }

    return url + queryParams(data)
}

/**
 * 静态资源
 */
function assetsurl(hash, options) {
    // 合并配置
    const config = shallowMerge({
        // 这里是默认配置
        size: '',
        href: ASSETS_IMG_URL
    }, options)

    const {
        url,
        data
    } = $func.parseUrlParams($func.isFullWebLink(hash) ? hash : config.href + hash)

    if (config.size) {
        data['x-oss-process'] = OSS_IMG_SIZE_STYLE[config.size]
    }

    return url + queryParams(data)
}

export default {
    assetsurl,
    imgurl
}